package com.cencat.route.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 调度统计信息VO
 * 
 * @author cencat
 * @version 1.0
 * @since 2024-01-01
 */
@Data
@Schema(description = "调度统计信息")
public class DispatchStatisticsVO {

    @Schema(description = "总调度数量")
    private Long totalDispatchCount;

    @Schema(description = "待分配调度数量")
    private Long pendingDispatchCount;

    @Schema(description = "已分配调度数量")
    private Long assignedDispatchCount;

    @Schema(description = "进行中调度数量")
    private Long inProgressDispatchCount;

    @Schema(description = "已完成调度数量")
    private Long completedDispatchCount;

    @Schema(description = "已取消调度数量")
    private Long cancelledDispatchCount;

    @Schema(description = "异常调度数量")
    private Long exceptionDispatchCount;

    @Schema(description = "今日新增调度数量")
    private Long todayNewDispatchCount;

    @Schema(description = "本周新增调度数量")
    private Long weekNewDispatchCount;

    @Schema(description = "本月新增调度数量")
    private Long monthNewDispatchCount;

    @Schema(description = "今日完成调度数量")
    private Long todayCompletedDispatchCount;

    @Schema(description = "本周完成调度数量")
    private Long weekCompletedDispatchCount;

    @Schema(description = "本月完成调度数量")
    private Long monthCompletedDispatchCount;

    @Schema(description = "平均调度时长（分钟）")
    private BigDecimal averageDispatchDuration;

    @Schema(description = "最长调度时长（分钟）")
    private BigDecimal maxDispatchDuration;

    @Schema(description = "最短调度时长（分钟）")
    private BigDecimal minDispatchDuration;

    @Schema(description = "调度成功率")
    private BigDecimal dispatchSuccessRate;

    @Schema(description = "调度取消率")
    private BigDecimal dispatchCancelRate;

    @Schema(description = "调度异常率")
    private BigDecimal dispatchExceptionRate;

    @Schema(description = "平均响应时间（分钟）")
    private BigDecimal averageResponseTime;

    @Schema(description = "最快响应时间（分钟）")
    private BigDecimal minResponseTime;

    @Schema(description = "最慢响应时间（分钟）")
    private BigDecimal maxResponseTime;

    @Schema(description = "自动调度数量")
    private Long autoDispatchCount;

    @Schema(description = "手动调度数量")
    private Long manualDispatchCount;

    @Schema(description = "自动调度成功率")
    private BigDecimal autoDispatchSuccessRate;

    @Schema(description = "手动调度成功率")
    private BigDecimal manualDispatchSuccessRate;

    @Schema(description = "统计时间")
    private LocalDateTime statisticsTime;

}